Many software applications may be modified or customized by users or administrators to include additional functions, objects, databases, and customized code. When the underlying software application is upgraded to a new version, in many instances, the modified or customized functions, objects, databases, and code of the prior, obsolete version may be incompatible with the new version. Rewriting the modified or customized functions, objects, databases, and/or code may be time consuming and expensive.